100 REM TIC-TAC-TOE 110 GOTO 560 120 REM X 130 POKE M,A:POKE M+4,A:POKE M+41,A 140 POKE M+43,A:POKE M+82,A:POKE M+121,A 150 POKE M+123,A:POKE M+160,A:POKE M+164,A 160 RETURN 170 REM O 180 POKE M,233:POKE M+4,223:POKE M+160,95:POKE M+164,105 190 FOR I=1 TO 3 200 POKE M+I,A:POKE M+I+160,A 210 POKE M+40*I,A:POKE M+40*I+4,A 220 NEXT I 230 POKE M+82,32 240 RETURN 250 FOR I=M+C TO M+C+160 STEP 40 260 POKE I,CC(N):POKE I+1,CC(N):POKE I+2,CC(N):POKE I+3,CC(N):POKE I+4,CC(N) 270 NEXT I 280 RETURN 290 REM TONE 300 POKE F1,42:POKE F2,62 310 POKE W,17 320 FOR D=1 TO 60:NEXT D:POKE W,0 330 RETURN 340 X=N:P(E)=X:M=S(E):ON X GOSUB 130,130,180 350 GOSUB 250 360 FOR I=1 TO 7 STEP 3 370 IF P(I)<>P(I+1) THEN 400 380 IF P(I)<>P(I+2) THEN 400 390 ON P(I)+1 GOTO 400,1550,1550,1550 400 NEXT I 410 FOR I=1 TO 3 420 IF P(I)<>P(I+3) THEN 450 430 IF P(I)<>P(I+6) THEN 450 440 ON P(I)+1 GOTO 450,1550,1550,1550 450 NEXT I 460 IF P(5)<>X THEN 490 470 IF (P(1)=X) AND (P(9)=X) THEN 1550 480 IF (P(3)=X) AND (P(7)=X) THEN 1550 490 FOR I=1 TO 9 500 IF P(I)=0 THEN 540 510 NEXT I 520 PRINT "TIE GAME!" 530 GOTO 1590 540 N=ABS(N-4) 550 RETURN 560 PRINT "[147]":POKE 53281,1 570 W=54276:POKE W,0 580 PRINT TAB(15)"TIC-TAC-TOE" 590 FOR I=1 TO 9:READ S(I):NEXT I 600 DATA 1114,1122,1130,1434,1442 610 DATA 1450,1754,1762,1770 620 PRINT "CHOOSE ONE OF THE POSITION NUMBERS." 630 PRINT "TRY TO GET THREE IN A ROW." 640 POKE 54296,15:F1=54273:F2=54272:C=F2 650 POKE W+1,128:POKE W+2,16 660 A=160:CC(1)=6:CC(3)=10 670 PRINT "ALTERNATE TURNS WITH THE COMPUTER." 680 PRINT "[144]X GETS FIRST MOVE." 690 Y=3:Z=1:CH=2 700 PRINT "CHOOSE [144]F1 FOR [144]X" 710 PRINT TAB(8)"[144]F3 FOR [144]O" 720 GET E$:IF E$<>"[133]" AND E$<>"[134]" THEN 720 730 IF E$="[133]"THEN Y=1:Z=3 740 POKE 198,0 750 PRINT "CHOOSE [144]F1 BEGINNER" 760 PRINT TAB(8)"[144]F3 INTERMEDIATE" 770 GET E$:IF E$<>"[133]" AND E$<>"[134]" THEN 770 780 IF E$="[133]" THEN CH=1 790 PRINT "[147]":CT=INT(14*RND(0))+2 800 FOR I=1 TO 9:P(I)=0:NEXT I 810 FOR I=1080 TO 1960 STEP 40 820 POKE I,A:POKE I+C,CT 830 POKE I+8,A:POKE I+8+C,CT 840 NEXT I 850 FOR I=1353 TO 1375 860 POKE I,A:POKE I+C,CT:POKE I+320,A:POKE I+320+C,CT 870 NEXT I 880 FOR I=1 TO 9:POKE S(I)+82,I+48 890 POKE S(I)+82+C,0:NEXT I 900 N=1 910 IF CH=2 THEN 1040 920 IF Y=1 THEN 970 930 REM COMPUTER'S MOVE 940 E=INT(9*RND(0)+1):IF P(E)<>0 THEN 940 950 GOSUB 340 960 REM YOUR MOVE 970 GOSUB 300 980 GET E$:IF E$=""THEN 980 990 IF E$<"1" OR E$>"9" THEN 980 1000 E=VAL(E$):IF P(E)<>0 THEN 970 1010 GOSUB 340 1020 ON CH GOTO 940,1060 1030 REM COMPUTER'S MOVE 1040 IF Y=1 THEN 970 1050 REM CENTER POSITION 1060 IF P(5)=0 THEN E=5:GOTO 1520 1070 IF P(5)=X THEN 1140 1080 REM DIAGONALS 1090 IF P(1)=0 AND P(9)=Z THEN E=1:GOTO 1520 1100 IF P(1)=Z AND P(9)=0 THEN E=9:GOTO 1520 1110 IF P(3)=0 AND P(7)=Z THEN E=3:GOTO 1520 1120 IF P(3)=Z AND P(7)=0 THEN E=7:GOTO 1520 1130 REM COLUMNS 1140 FOR K=1 TO 3 1150 IF P(K)=X OR P(K+3)=X OR P(K+6)=X THEN 1200 1160 IF P(K)+P(K+3)+P(K+6)<>2*Z THEN 1200 1170 IF P(K)=0 THEN E=K:GOTO 1520 1180 IF P(K+3)=0 THEN E=K+3:GOTO 1520 1190 E=K+6:GOTO 1520 1200 NEXT K 1210 REM ROWS 1220 FOR K=1 TO 7 STEP 3 1230 IF P(K)=X OR P(K+1)=X OR P(K+2)=X THEN 1280 1240 IF P(K)+P(K+1)+P(K+2)<>2*Z THEN 1280 1250 IF P(K)=0 THEN E=K:GOTO 1520 1260 IF P(K+1)=0 THEN E=K+1:GOTO 1520 1270 E=K+2:GOTO 1520 1280 NEXT K 1290 REM PREVENT COLUMN 1300 FOR K=1 TO 3 1310 IF P(K)=Z OR P(K+3)=Z OR P(K+6)=Z THEN 1360 1320 IF P(K)+P(K+3)+P(K+6)<>2*X THEN 1360 1330 IF P(K)=0 THEN E=K:GOTO 1520 1340 IF P(K+3)=0 THEN E=K+3:GOTO 1520 1350 E=K+6:GOTO 1520 1360 NEXT K 1370 REM PREVENT ROW 1380 FOR K=1 TO 7 STEP 3 1390 IF P(K)=Z OR P(K+1)=Z OR P(K+2)=Z THEN 1440 1400 IF P(K)+P(K+1)+P(K+2)<>2*X THEN 1440 1410 IF P(K)=0 THEN E=K:GOTO 1520 1420 IF P(K+1)=0 THEN E=K+1:GOTO 1520 1430 E=K+2:GOTO 1520 1440 NEXT K 1450 IF P(5)=Z THEN 1500 1460 IF P(1)=0 AND P(9)=X THEN E=1:GOTO 1520 1470 IF P(1)=X AND P(9)=0 THEN E=9:GOTO 1520 1480 IF P(3)=0 AND P(7)=X THEN E=3:GOTO 1520 1490 IF P(3)=X AND P(7)=0 THEN E=7:GOTO 1520 1500 GOTO 940 1510 REM 1520 GOSUB 340 1530 GOTO 970 1540 REM GAME OVER 1550 IF X<>Y THEN 1580 1560 PRINT "YOU WIN!!!" 1570 GOTO 1590 1580 PRINT "COMPUTER WINS!!" 1590 FOR I=1 TO 20 1600 POKE F1,INT(60*RND(0)+30) 1610 POKE F2,INT(200*RND(0)+10) 1620 GOSUB 310 1630 NEXT I 1640 PRINT "TRY AGAIN? (Y/N)"; 1650 GET E$:IF E$="N" THEN 1690 1660 IF E$<>"Y" THEN 1650 1670 CLR 1680 GOTO 560 1690 PRINT "[147]" 1700 END